package //
// This software is now distributed according to
// the Lesser Gnu Public License. Please see
// http://www.gnu.org/copyleft/lesser.txt for
// the details.
// -- Happy Computing!
//
com.stevesoft.pat;

/**
 * Package pat can search anything that implements this interface. Package pat
 * assumes the following:
 * <ul>
 * <li>The StringLike object will not change. Calls to charAt(int) will not
 * vary with time.
 * <li>The length of the object being searched is known before the search
 * begins and does not vary with time.
 * </ul>
 * Note that searching String is probably faster than searching other objects,
 * so searching String is still preferred if possible.
 */
public interface StringLike {

	public char charAt(int i);

	public String toString();

	public int length();

	public String substring(int i1, int i2);

	/**
	 * Obtain the underlying object, be it a String, char[], RandomAccessFile,
	 * whatever.
	 */
	public Object unwrap();

	/**
	 * By default, the result is put in a String or char[] when a replace is
	 * done. If you wish to save the result in some other StringBufferLike then
	 * you can do this by implementing this method, or over-riding it's behavior
	 * from an existing class.
	 */
	public BasicStringBufferLike newStringBufferLike();

	public int indexOf(char c);
}
